package com.myblog.demo.service;

import com.myblog.demo.entity.MessageSessionUser;
import com.myblog.demo.entity.vo.Friend;
import com.myblog.demo.entity.vo.MessageSession;
import com.myblog.demo.mapper.MessageSessionMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MessageSessionService {
    @Autowired
    private MessageSessionMapper messageSessionMapper;

    // 根据当前用户id获取到该用户都在哪些会话当中，返回一组sessionId
    public List<Integer> getSessionIdByUId(@Param("uid") Integer uid){
        return messageSessionMapper.getSessionIdsByUId(uid);
    }

    // 根据 sessionId 来查询这个会话除了自己之外的用户
    public Friend getFriendBySessionId(@Param("sessionId") Integer sessionId, int selfUserId){
        return messageSessionMapper.getFriendBySessionId(sessionId, selfUserId);
    }

    // 新增会话，返回一个会话id
    // 此次的返回值 int 是影响数据库的行数，而 sessionId通过 messageSession 获取
    public Integer addMessageSession(MessageSession messageSession){
        return messageSessionMapper.addMessageSession(messageSession);
    }

    // 判断两个用户之间是否已经存在会话了
    public Boolean isExistsSessionId(Integer uid1, Integer uid2) {
        Integer flag = messageSessionMapper.isExistsSessionId(uid1, uid2);

        System.out.println("isExistsSessionId + " + flag);

        return flag != null;
    }

    // 新增会话后，需要给 message_session_user 表也要新增相应会话与用户之间的记录
    public int addMessageSessionUser(MessageSessionUser messageSessionUser){
        return messageSessionMapper.addMessageSessionUser(messageSessionUser);
    }
}
